Java Technologies Nested Object Mapping এর উদাহরণ গাইড ও নোট

326

MapStruct একটি শক্তিশালী টুল যা JavaBeans বা POJOs (Plain Old Java Objects) এর মধ্যে ডেটা ম্যাপিং করতে ব্যবহৃত হয়। Nested Object Mapping হল এমন একটি প্রক্রিয়া যেখানে এক অবজেক্টের মধ্যে অন্য অবজেক্টের ডেটা ম্যাপ করা হয়। MapStruct ব্যবহার করে এটি খুব সহজে এবং পারফরম্যান্সে দক্ষভাবে সম্পন্ন করা যায়।

এখানে, আমরা Nested Object Mapping এর ধারণা এবং উদাহরণ দেখাবো, যেখানে একটি অবজেক্টের মধ্যে আরেকটি অবজেক্ট ম্যাপ করা হবে।


১. Nested Object Mapping এর ধারণা

Nested Object Mapping হল এমন একটি ম্যাপিং, যেখানে একটি অবজেক্টের ফিল্ডের মান অন্য একটি অবজেক্টে ম্যাপ করা হয়। উদাহরণস্বরূপ, ধরুন আমাদের একটি Person অবজেক্ট আছে, যেটির মধ্যে একটি Address অবজেক্ট রয়েছে। এই দুটি অবজেক্টের মধ্যে ম্যাপিং করতে MapStruct ব্যবহার করা যায়।


২. Nested Object Mapping উদাহরণ

ধরা যাক, আমাদের দুটি অবজেক্ট রয়েছে: Person এবং Address। আমরা PersonDTO তে Person অবজেক্টের Address ম্যাপ করতে চাই।

Person.java (Parent Object)

public class Person {
    private String name;
    private int age;
    private Address address;

    // Getters and Setters
}

Address.java (Nested Object)

public class Address {
    private String street;
    private String city;

    // Getters and Setters
}

PersonDTO.java (DTO Object)

public class PersonDTO {
    private String name;
    private int age;
    private AddressDTO address;

    // Getters and Setters
}

AddressDTO.java (Nested DTO Object)

public class AddressDTO {
    private String street;
    private String city;

    // Getters and Setters
}

এখন, আমাদের Person অবজেক্টকে PersonDTO তে ম্যাপ করতে হবে, এবং Address অবজেক্টটিকে AddressDTO তে ম্যাপ করতে হবে।


৩. MapStruct Mapper Interface

এখন, MapStruct Mapper Interface তৈরি করে আমরা Person থেকে PersonDTO এবং Address থেকে AddressDTO তে ম্যাপিং করবো। এখানে Address অবজেক্টটি AddressDTO তে ম্যাপ হবে, যা একটি Nested Mapping হবে।

PersonMapper.java

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

@Mapper
public interface PersonMapper {
    PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);

    @Mapping(source = "address", target = "address")
    PersonDTO personToPersonDTO(Person person);

    @Mapping(source = "street", target = "street")
    @Mapping(source = "city", target = "city")
    AddressDTO addressToAddressDTO(Address address);
}

এখানে:

  • @Mapping অ্যানোটেশন ব্যবহার করা হয়েছে Person থেকে PersonDTO এবং Address থেকে AddressDTO ম্যাপ করার জন্য।
  • source হিসেবে Person এবং Address এর ফিল্ডগুলি এবং target হিসেবে PersonDTO এবং AddressDTO এর ফিল্ডগুলির নাম উল্লেখ করা হয়েছে।

৪. Main Class Example (MapStruct Mapper ব্যবহার করা)

এখন, আমরা MapStruct Mapper ব্যবহার করে Person অবজেক্ট থেকে PersonDTO তে ম্যাপিং করব।

public class Main {
    public static void main(String[] args) {
        Address address = new Address();
        address.setStreet("123 Main St");
        address.setCity("New York");

        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);
        person.setAddress(address);

        // Mapping
        PersonDTO personDTO = PersonMapper.INSTANCE.personToPersonDTO(person);

        // Output
        System.out.println("Name: " + personDTO.getName());
        System.out.println("Age: " + personDTO.getAge());
        System.out.println("Street: " + personDTO.getAddress().getStreet());
        System.out.println("City: " + personDTO.getAddress().getCity());
    }
}

এখানে:

  • PersonMapper.INSTANCE.personToPersonDTO মেথডের মাধ্যমে Person অবজেক্টকে PersonDTO তে ম্যাপ করা হচ্ছে।
  • Address অবজেক্টটি স্বয়ংক্রিয়ভাবে AddressDTO তে ম্যাপ হয়ে যাবে কারণ MapStruct সেটি পরিচালনা করবে।

৫. Output

উপরোক্ত কোডটি রান করলে আপনি নিম্নলিখিত আউটপুট পাবেন:

Name: John Doe
Age: 30
Street: 123 Main St
City: New York

এখানে, Address এর মধ্যে থাকা street এবং city ফিল্ডগুলি AddressDTO তে সফলভাবে ম্যাপ করা হয়েছে, যা PersonDTO তে অন্তর্ভুক্ত হয়েছে।


৬. Nested Object Mapping এর সুবিধা

  1. Code Reduction: MapStruct ব্যবহার করলে আপনার কোড অনেক কম হবে, কারণ আপনাকে manual mapping করতে হবে না।
  2. Type Safety: MapStruct টাইপ সেফটি প্রদান করে, ফলে টাইপ মিসম্যাচের কারণে ত্রুটি কম হয়।
  3. Compile-time Mapping: MapStruct compile-time এ কোড জেনারেট করে, ফলে রানটাইম পারফরম্যান্সে কোনো সমস্যা হয় না।
  4. Easier Integration with Frameworks: MapStruct Spring বা অন্যান্য Java ফ্রেমওয়ার্কের সাথে সহজে ইন্টিগ্রেট করা যায়।

সারাংশ

Nested Object Mapping MapStruct এর অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য, যা আপনি সহজে Parent-Child Object বা Nested Object এর মধ্যে ডেটা ম্যাপ করতে পারেন। উদাহরণস্বরূপ, এখানে Person অবজেক্ট এবং তার মধ্যে থাকা Address অবজেক্টটি PersonDTO এবং AddressDTO তে ম্যাপ করা হয়েছে। MapStruct-এর মাধ্যমে আপনি কোড জেনারেশন এবং টাইপ সেফটির সুবিধা পেতে পারেন, এবং এটি আপনাকে কম কোডে দ্রুত ম্যাপিং সম্পাদন করতে সাহায্য করে।


Content added By
Promotion

Are you sure to start over?

Loading...